unsigned long speed_last_time=millis();
short int speed_pin=18;

void speed_calc(){
  if(digitalRead(speed_pin)==LOW){
    float umfang=1.98; // umfang in Metern
    unsigned long jetzt=millis();
    
    if((jetzt-speed_last_time) > 20 ){ // 20 = (( Umfang * 3,6 / Max speed(260) ) - ein bisschen)/1 Magnet 
      speed_out_kmh=round((umfang/(jetzt-speed_last_valid_time)) * 3.6 * 1000); // 1 Magnet // eventuell /360*280 => wenn 280° zwischen dem letzen und dem ersten flattern liegen, aber ich denke das werden eher 358° sein 
      speed_last_valid_time=jetzt;
    };
    speed_last_time=jetzt;
  };
};

void speed_init (){
  pinMode(speed_pin, INPUT); // interrupt 2
  attachInterrupt(5, speed_calc, FALLING); // pin 18
  Serial.println("Speed init done");
};

int speed_copy(){
//  return 60;
  if(millis()-speed_last_valid_time<1000){ // über 5,4 km/h => 1000/1 Magnet
    return speed_out_kmh;
  } else {
    speed_out_kmh=0;
    return 0;
  };
};

